/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hoja.de.trabajo5;

/**
 *
 * @author FAMILIA
 */

    
    public class Nodo<E>{
    
    /**
     * Atributos de la clase.
     * Protected ya que ninguna clase, a excepción de nodo, puede modificarlos.
     * El valor que se quiere guardar.
     */
    protected E data;
    /**
     * La referencia que se crea para agregar otro objeto.
     */
    protected Nodo<E> nextElement;
    
    /** 
     * Constructor de la clase.
     * @param v un objeto cualquiera.
     * @param next el nodo que irá detrás del objeto anterior.
     * Al finalizar este método, el nuevo elemento se volverá la cabeza de la lista.
     */
    public Nodo(E v, Nodo<E> next){
    data = v;
    nextElement = next;
    }
    
    /** 
     * @param v objeto cualquiera.
     * Crea la nueva cola de la lista.
     */
    public Nodo(E v){
        this(v,null);
    }
    
    /**
     * No recibe parámetros.
     * @return Con este método se regresa el siguiente elemento de la lista.
     */
    public Nodo<E> next(){
    return nextElement;
    }
    
    /**
     * Método que "corre" la cabeza de la lista al siguiente elemento.
     * @param next 
     */
    public void setNext(Nodo<E> next){
    nextElement = next;
    }
    
    /**
     * @return Regresa el valor del elemento E.
     * No tiene parámteros. 
     */
    public E value(){
    return data;
    }

    /**
     * Método que define un valor a un elemento.
     * No regresa nada.
     * Recibe como parámteros un objeto E.
     * @param value 
     */
    public void setValue(E value){
    //Define el valor del elemento.
        data = value;
    }
    
}
    
    
    
    
    